home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / Dylan Related / Dylan FAQ 29July94 / Dylan FAQ.txt < prev    next >
Encoding:
Text File  |  1994-08-17  |  18.8 KB  |  421 lines  |  [TEXT/ttxt]

  1. Dylan(tm) FAQ
  2. Apple Computer - July 29, 1994
  3.  
  4. This memo answers questions which are frequently asked about the Dylan
  5. programming language, and its implementations. If you want to keep up with
  6. Dylan news, consider joining the announce-dylan or info-dylan mailing
  7. lists, or the comp.lang.dylan newsgroup, described below.
  8.  
  9. The latest version of this memo is available by anonymous ftp from
  10. cambridge.apple.com: /pub/dylan/faq/ in a variety of formats, including
  11. plain ASCII, RTF (Rich Text Format), and PostScript(tm).
  12.  
  13. The topics covered in this FAQ are
  14.   [1] Online Sources of Dylan Information
  15.         [1-1] Where is Dylan information generally available?
  16.         [1-2] Where can I get a copy of the language specification?
  17.         [1-3] Are there any public mailing lists for discussing Dylan?
  18.         [1-4] Where else can I get information about Dylan?
  19.         [1-5] Where should I send comments on the Dylan language?
  20.         [1-6] What should I do if I want to implement Dylan?
  21.         [1-7] Is there a group which promotes the use of object-oriented
  22.         dynamic languages?
  23.  
  24.   [2] General Questions About Dylan and Implementations
  25.         [2-1] What is Dylan?
  26.         [2-2] What is the target audience for Dylan?
  27.         [2-3] How does Dylan differ from previous OODLs?
  28.         [2-4] Does Apple have an implementation of Dylan?
  29.         [2-5] How can I get an early copy of Apple's Dylan implementation?
  30.         [2-6] What third-party implementations of Dylan are available?
  31.         [2-7] Is Dylan related to the Newton PDA?
  32.         [2-8] Is Dylan designed to be a replacement for Common Lisp?
  33.         [2-9] Is Dylan a proprietary language?  Why is the Dylan name
  34.         trademarked?
  35.  
  36.   [3] Questions about the Dylan Language Design
  37.         [3-1] Is the Dylan language design frozen?
  38.         [3-2] What does the Dylan syntax look like?
  39.         [3-3] Will Dylan have a standard macro system with the algebraic syntax?
  40.         [3-4] Are there plans to specify a standard I/O package for Dylan?
  41.         What about threads?
  42.         [3-5] Why is 'make' allowed to return a previously allocated instance,
  43.         or an object which is an indirect instance of the class passed to make?
  44.         [3-6] The Dylan '92 manual doesn't require implementations to optimize
  45.         tail-recursion.  Was this an intentional omission, or an editorial oversight?
  46.         [3-7] The Dylan '92 manual doesn't say much about modules.  Will this
  47.         be specified in the future?
  48.         [3-8] Can the 'method' special form be used to create closures?
  49.         [3-9] I don't understand how setter variables work.  Is 'setter' a
  50.         special form?
  51.         [3-10] What kind of object is used to return multiple values?
  52.         [3-11] Is the specification of sealing complete?
  53.         [3-12] Will Dylan include 'eval'?
  54.         [3-13] Will Dylan include an application framework?
  55.         [3-14] Will Dylan interface to other languages?
  56.  
  57.  
  58. [1] Online Sources of Dylan Information
  59.  
  60. [1-1] Where is Dylan information generally available?
  61.  
  62. On the Internet, the Apple Dylan ftp site is cambridge.apple.com:/pub/dylan/.
  63.  
  64. The Dylan WWW (World-Wide Web) page at Carnegie Mellon University is
  65. http://legend.gwydion.cs.cmu.edu:8001/dylan/
  66.  
  67. The Dylan newsgroup is comp.lang.dylan.
  68.  
  69. On Applelink, Dylan files are regularly uploaded to this area:
  70. Developer Support:Developer Services:
  71.    Development Platforms:Dylan Related
  72.  
  73. On CompuServe, Type GO APPLE to get to the Apple support forum.
  74. There are 16 libraries, go into Programmers/Developers Library #15
  75.  
  76. [1-2] Where can I get a copy of the language specification?
  77.  
  78. The first book on the Dylan language was published in 1992.  Since then,
  79. the language has undergone a great deal of change in response to feedback
  80. from potential users and implementors.  Throughout this process, changes to
  81. the language design have been published electronically in the form of
  82. design notes.  The current round of language design is now essentially
  83. complete except for the macro system.
  84.  
  85. A new Dylan language reference will be published in early 1995.  This will
  86. be the definitive specification of the Dylan language.  Apple is working
  87. closely with other Dylan implementors to ensure that this book is not
  88. Apple-specific, but rather, applies equally to all Dylan implementations.
  89.  
  90. Of course, we realize that many people want to read about Dylan now!  So to
  91. fill the gap until the new book is published, an interim Dylan reference
  92. book is available by anonymous ftp, in the directory
  93. /pub/dylan/dylan-manual/, as well as in the other file areas listed in
  94. topic [1-1] above. It is available in both RTF (Rich Text Format) and
  95. PostScript formats (214 pages). The interim book is a combination of the
  96. original Dylan book, the previously published design notes, and additional
  97. previously unpublished design decisions. The document is called "interim"
  98. not because the language design is unfinished, but because this is a very
  99. rough document intended for use until the new book is ready.
  100.  
  101. [1-3] Are there any public mailing lists for discussing Dylan?
  102.  
  103. Yes. The info-dylan mailing list is a forum for discussing all subjects
  104. related to Dylan.  Each day's messages are gathered into a digest and sent
  105. as a single compound message to the list info-dylan-digest.  The mailing
  106. list is also linked to the Newsgroup comp.lang.dylan.
  107.  
  108. The announce-dylan mailing list is a moderated list, for major
  109. announcements about Dylan (such as the availability of new implementations
  110. of the language).  All messages sent to announce-dylan are also sent to
  111. info-dylan.
  112.  
  113. To subscribe to info-dylan or announce-dylan, send mail to
  114. majordomo@cambridge.apple.com.  The body of the message should be
  115. "subscribe <list-name>", where <list-name> is the name of the mailing list
  116. you want to subscribe to.  To unsubscribe to one of the mailing lists, send
  117. majordomo a message with the body "unsubscribe <list-name>".  If you would
  118. like to subscribe or unsubscribe an address which is different from the
  119. return address of the message, include the address after the <list-name>.
  120. For complete majordomo instructions, send a message with the body "help".
  121.  
  122. The name of the digest form of info-dylan is info-dylan-digest.
  123.  
  124. Please do not send administrative requests to the mailing lists!  If you
  125. have trouble with info-dylan, send mail to sysadmin@cambridge.apple.com.
  126.  
  127. [1-4] Where else can I get information about Dylan?
  128.  
  129. The Gwydion Project at Carnegie Mellon University maintains a World Wide
  130. Web (WWW) page of general information on Dylan.  This is accessible using
  131. Mosaic or other web-browsing software.  This page contains the Interim
  132. Reference Manual as well as the original Dylan book in on-line form,
  133. annotated with links to the design notes and changes that have been
  134. approved. This web page also contains the current FAQ from Apple and other
  135. general information of interest to the Dylan community.
  136.  
  137. The URL is "http://legend.gwydion.cs.cmu.edu:8001/dylan/".
  138.  
  139. The Gwydion Project also intends to maintain an FTP-accessible on-line
  140. repository of Dylan libraries and code that the authors wish to share with
  141. the rest of the community.  When this is in operation, it will be announced
  142. on the Dylan mailing lists and will be pointed to from the Dylan WWW page
  143. mentioned above.
  144.  
  145. [1-5] Where should I send comments on the Dylan language?
  146.  
  147. Most comments can be sent to info-dylan.  If you wish to send a private
  148. letter to the Apple engineers working on Dylan, you can send a message to
  149. dylan-comments
  150. @cambridge.apple.com. (AppleLink users can send mail to DYLAN).
  151.  
  152. [1-6] What should I do if I want to implement Dylan?
  153.  
  154. Send mail to dylan-comments@cambridge.apple.com.  We have put together a
  155. program to support implementors, and we want to hear from you.  (AppleLink
  156. users can send mail to DYLAN).
  157.  
  158. If you've written an implementation of Dylan and want to release it, please
  159. contact us for a trademark license.
  160.  
  161. [1-7] Is there a group which promotes the use of object-oriented dynamic
  162. languages?
  163.  
  164. Yes.  There is an OODL special interest group of the Software Frameworks
  165. Association (formerly called MADA).  SFA is a group which champions
  166. object-oriented programming on the Macintosh as well as other platforms.
  167.  
  168. To subscribe to the OODL sig mailing list from AppleLink send mail to
  169. OODL.SIG. Internet subscriptions should be requested from
  170. oodl-sig-request@cambridge.apple.com.
  171.  
  172.  
  173. [2] General Questions About Dylan and Implementations
  174.  
  175. [2-1] What is Dylan?
  176.  
  177. Dylan is a new Object Oriented Dynamic Language (OODL).  Dylan combines the
  178. features of static and dynamic languages.  The goal of the language is to
  179. support a high level of programmer productivity, while still allowing the
  180. efficient delivery of applications and libraries.
  181.  
  182. Dylan is consistently object-oriented.  It is not based on a particular
  183. previously-existing procedural language with some kind of object-oriented
  184. extension.
  185.  
  186. [2-2] What is the target audience for Dylan?
  187.  
  188. The target audience for Dylan is developers of commercial application
  189. software, most of whom are currently using static languages such as C and
  190. C++.   We expect Dylan will appeal to many other groups of programmers as
  191. well, such as educational users who want a very clean object-oriented
  192. language design, or in-house developers who need a high-level, very
  193. productive language.
  194.  
  195. [2-3] How does Dylan differ from previous OODLs?
  196.  
  197. Dylan is designed to allow the powerful and flexible programming techniques
  198. and development environments associated with OODLs, while also allowing the
  199. small, fast delivered applications currently associated with static
  200. languages.
  201.  
  202. Unlike many dynamic languages, Dylan's design consciously enables the
  203. runtime environment to execute without the development environment present.
  204. In addition, Dylan will let you selectively 'turn-off' dynamic capabilities
  205. when they are no longer needed, allowing more efficient compilation.
  206.  
  207. [2-4] Does Apple have an implementation of Dylan?
  208.  
  209. Apple recently announced plans to release an implementation of Dylan.
  210.  
  211. The following description of Apple's implementation was taken from a data
  212. sheet distributed by Apple.
  213.  
  214. The Apple Dylan development environment is designed to let you create
  215. complex, commercial-quality projects with all the advantages of a
  216. rapid-prototyping environment.
  217.  
  218. Your project is stored in a database, unlike traditional, file-based
  219. systems. Apple Dylan's customizable browsers will give you a powerful new
  220. way to look at and manipulate your application as it executes.  You can
  221. browse class hierarchies graphically, find all references to a given
  222. routine or variable, and inspect objects in your program while it's
  223. running.
  224.  
  225. With Apple Dylan's incremental compiler, you will be able to actually
  226. change code in a running program and see the results right away.  No more
  227. waiting for a long edit, compile, link, execute, debug cycle.  This gives
  228. you freedom as a programmer to explore various options and rapidly improve
  229. your product.
  230.  
  231. Apple Dylan will include:
  232. *       Dylan compiler and runtime
  233. *       Integrated development environment featuring incremental
  234. development and advanced configurable browsing and viewing of code
  235. *       Dylan application framework
  236. *       Dylan user-interface builder
  237. *       Cross-language support allowing seamless access to existing C and
  238. C++ code and APIs
  239.  
  240. The first release of Apple Dylan is scheduled to ship in the first quarter
  241. of 1995.  This release will support native 68K stand alone applications.
  242.  
  243. Six to nine months after the first release, Apple will release a version of
  244. Dylan which supports native PowerPC code and OpenDoc parts (components).
  245.  
  246. [2-5] How can I apply to be an early seed site for Apple's Dylan implementation?
  247.  
  248. Send a message to the AppleLink address DYLAN, or the Internet address
  249. dylan@applelink.apple.com.  The message should include your name, address,
  250. phone number, and a brief description of how you plan on using Apple Dylan.
  251.  
  252. [2-6] What third-party implementations of Dylan are available?
  253.  
  254. Several third-parties have expressed interest in implementing Dylan.
  255.  
  256. [a] Marlais is an experimental interpreter written in C. It was created by
  257. Brent Benson, and is being extended by Joe Wilson, Patrick Beard, and
  258. others. Marlais 0.4 is available in the Dylan ftp directory at
  259. cambridge.apple.com. It supports the older lisp-like syntax, and version
  260. 0.5 (coming soon) is expected to support the official algebraic syntax.
  261.  
  262. Marlais 0.4 runs on a variety of unix platforms. Marlais 0.3 has been
  263. ported to the Macintosh, and is available in the Dylan ftp directory as
  264. MacMarlais 0.31.
  265.  
  266. [b] Harlequin is currently investing in a commercial implementation of
  267. Dylan. They are building a PC based Windows (NT/Chicago) hosted version of
  268. the language. For more information, contact Mike Smith
  269. (mikes@harlequin.com), group manager of Harlequin's Dylan project.
  270.  
  271. [c] The Gwydion Project at Carnegie Mellon University is building an
  272. innovative new software development and maintenance environment around the
  273. Dylan language.  A part of this work will involve the development of a
  274. high-performance Dylan implementation that will produce code for many
  275. platforms.
  276.  
  277. For more information on this project, see the Gwydion project's World Wide
  278. Web page: "http://legend.gwydion.cs.cmu.edu:8001/gwydion/".
  279.  
  280. [d] As a development tool, the Gwydion project has produced a byte-coded
  281. Dylan implementation called "Mindy". Though it is not very fast, does not
  282. have an extensive environment, and time spent on maintaining it will be
  283. limited, Mindy may be of some value to people who want to play with Dylan
  284. code and get a feel for the language. Mindy is documented on the Gwydion
  285. web page (see above), and is available by anonymous ftp from
  286. legend.gwydion.cs.cmu.edu in the file:
  287.         /afs/cs.cmu.edu/project/gwydion/release/mindy.tar.gz
  288. Due to CMU security measures, if you use the ftp 'cd' command, then you
  289. must 'cd' to the release directory in one cd command line; for example, do
  290. not try to 'cd' to "/afs/cs/project/gwydion/".
  291.  
  292. [e] Thomas 1.1 is an experimental interpreter written in Scheme. It was
  293. created by Matt Birkholz, Jim Miller, and Ron Weiss at the DEC Cambridge
  294. Research Lab in 1992. It supports the older lisp-like syntax, and does not
  295. incorporate many of the more recent language changes. Thomas is available
  296. at the Dylan ftp site at cambridge.apple.com.
  297.  
  298. [2-7] Is Dylan related to the Newton PDA?
  299.  
  300. Not at this time. If you are looking for more information on Newton
  301. development, you need to contact the Newton Developer Relations at
  302. NEWTON.DEVS@applelink.apple.com.
  303.  
  304. [2-8] Is Dylan designed to be a replacement for Common Lisp?
  305.  
  306. No.  We see Common Lisp and Dylan filling two distinct needs.
  307.  
  308. [2-9] Is Dylan a proprietary language? Why is the Dylan name trademarked?
  309.  
  310. We want Dylan to be available on as many computers as possible.  To this
  311. end, we are encouraging groups outside Apple to implement Dylan.
  312.  
  313. It is our intention to license the Dylan trademark to any implementation
  314. which passes a standard test suite.  The purpose of the trademark is to
  315. ensure quality and consistency among implementations.
  316.  
  317. [3] Questions About the Dylan Language Design
  318.  
  319. [3-1] Is the Dylan language design frozen?
  320.  
  321. With the exception of the macro system, the current language design is
  322. complete.  At this time, we will only be making small tweaks, or changes
  323. necessary to resolve bugs or inconsistencies in the specification.
  324.  
  325. [3-2] What does the Dylan syntax look like?
  326.  
  327. The first Dylan book published in 1992 used a parenthesized, lisp-like
  328. syntax.  The current language definition uses an algebraic syntax, which
  329. will be very familiar to users of Pascal or C.
  330.  
  331. [3-3] Will Dylan have a standard macro system with the algebraic syntax?
  332.  
  333. Yes.
  334.  
  335. [3-4] Are there plans to specify a standard I/O package for Dylan?  What
  336. about threads?
  337.  
  338. Threads, I/O, and other language features may be provided as optional
  339. libraries in the future.  They are not currently part of the language.
  340. Because of the great variety of computing platforms-from PDA to
  341. mainframe-we do not want to standardize on these features too strictly.
  342.  
  343. [3-5] Why is 'make' allowed to return a previously allocated instance, or
  344. an object which is an indirect instance of the class passed to make?
  345.  
  346. We feel that this is a very important abstraction mechanism.  A class
  347. should have flexibility in how it implements make, as long as the object
  348. returned fulfills the protocol of the class.
  349.  
  350. For example, this allows a library to document a single abstract class
  351. which is supported by several undocumented implementation classes. The
  352. abstract class can choose which implementation class to instantiate based
  353. on the additional arguments to make.  This allows optimizations which are
  354. transparent to the clients of the library.
  355.  
  356. The default method for make of a user-defined class returns a fresh direct
  357. instance of the requested class.
  358.  
  359. [3-6] The Dylan '92 manual doesn't require implementations to optimize
  360. tail-recursion. Was this an intentional omission, or an editorial
  361. oversight?
  362.  
  363. It was an editorial oversight.  Dylan implementations will be required to
  364. be properly tail recursive.
  365.  
  366. [3-7] The Dylan '92 manual doesn't say much about modules.  Will this be
  367. specified in the future?
  368.  
  369. The new language document includes a complete module specification.
  370.  
  371. [3-8] Can the 'method' special form be used to create closures?
  372.  
  373. Yes.
  374.  
  375. [3-9] I don't understand how setter variables work.  Is 'setter' a special form?
  376.  
  377. This has been clarified in the new language design.  The new design is
  378. included in the interim Dylan reference book.
  379.  
  380. [3-10] What kind of object is used to return multiple values?
  381.  
  382. When a function returns multiple values, the return values are not stored
  383. in a wrapper object;  they are returned directly.  For example, if a
  384. function returns "the values 4 and 5", it returns two integers.  It does
  385. not return a data structure which contains two integers.
  386.  
  387. Returning multiple values is similar to calling a function with more than
  388. one argument.  When passing multiple objects as arguments to a function,
  389. the objects do not have to be stored in a single data structure before they
  390. are passed.
  391.  
  392. [3-11] Is the specification of sealing complete?
  393.  
  394. Yes.  The new language design includes a complete specification of sealing.
  395. This design is included in the interim Dylan reference book.
  396.  
  397. [3-12] Will Dylan include 'eval'?
  398.  
  399. Some implementations may choose to support eval, but we do not have plans
  400. to add it to the language standard.  We feel that the delivery of
  401. applications which are space efficient requires the separation of
  402. development time activity from runtime activity.
  403.  
  404. [3-13] Will Dylan include an application framework?
  405.  
  406. We recognize the value of application frameworks, especially cross-platform
  407. application frameworks.  Unfortunately, because of the great variation in
  408. computing platforms, a single application framework will not be part of the
  409. Dylan language.  On each platform, there should either be a Dylan-specific
  410. application framework, or Dylan should be able to use application
  411. frameworks written in other languages.
  412.  
  413. [3-14] Will Dylan interface to other languages?
  414.  
  415. We recognize that seamless integration with other languages, especially C
  416. and C++, is essential.  We are working on addressing this issue.  The
  417. solutions may not be part of the Dylan language proper.
  418.  
  419.  
  420.  
  421.